﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IterationLife.Mobile.AppServices.Dtos.Football;
using IterationLife.Extensions.Dtos;
using Util.Iocs;

namespace IterationLife.Mobile.AppServices.Services.Football
{
    /// <summary>
    /// 足球训练服务
    /// </summary>
    public interface IFootballTrainService : IDependency
    {
        /// <summary>
        /// 获取推荐课程
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        List<CourseOutput> GetRecommendedCourses(Guid userId);
        /// <summary>
        /// 获取热门位置
        /// </summary>
        /// <returns></returns>
        List<PlayerPositionOutput> GetHotPositions();
        /// <summary>
        /// 获取热门课程分类
        /// </summary>
        /// <returns></returns>
        List<CourseCategoryOutput> GetHotCourseCategories();
        /// <summary>
        /// 获取课程列表（分页）
        /// </summary>
        /// <param name="page"></param>
        /// <param name="size"></param>
        /// <param name="courseCategoryId"></param>
        /// <param name="positionCode"></param>
        /// <returns></returns>
        PagedData<CourseOutput> GetPagedCourses(int page, int size, Guid? userId = null, Guid? courseCategoryId = null, string positionCode = null);
        /// <summary>
        /// 获取课程详情
        /// </summary>
        /// <param name="courseId"></param>
        /// <returns></returns>
        CourseDetailOutput GetCourseDatail(Guid courseId, Guid? userId = null);
        /// <summary>
        /// 获取课时详情
        /// </summary>
        /// <param name="lessionId"></param>
        /// <returns></returns>
        LessonDetailOutput GetLessonDetail(Guid lessionId);
        /// <summary>
        /// 获取用户的课程
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        List<CourseOutput> GetUserCourses(Guid userId);
        /// <summary>
        /// 用户加入课程
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="courseId"></param>
        void JoinToUserCourses(Guid userId, Guid courseId);
        /// <summary>
        /// 用户移除课程
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="courseId"></param>
        void RemoveFromUserCourses(Guid userId, Guid courseId);
        /// <summary>
        /// 获取所有球员位置
        /// </summary>
        /// <returns></returns>
        List<PlayerPositionOutput> GetAllPlayerPositions();
    }
}
